package model;

public class Pacman implements Edible, Movable {
	private Tile eslabon;
	private boolean muerto;

	public Pacman(Tile eslabon){
		this.eslabon = eslabon;
		this.eslabon.addComible(this);
		muerto = false;
	}

	@Override
	public void move() {
		Tile proximoEslabon = null;
		Direccion direccion = Direccion.ABAJO;
		switch (direccion ) {
		case ARRIBA:
			proximoEslabon = eslabon.getEslabonArriba();
			break;
		case ABAJO:
			proximoEslabon = eslabon.getEslabonAbajo();
			break;
		case DERECHA:
			proximoEslabon = eslabon.getEslabonDerecho();
			break;
		case IZQUIERDA:
			proximoEslabon = eslabon.getEslabonIzquierdo();
			break;
		}
		this.comerEn(eslabon);
		//aca va la estrategia por ahora hardcodeado a ir arriba
	}
	
	public void move(Direccion direccion){
		Tile proximoEslabon = eslabon;

		switch (direccion ) {
		case ARRIBA:
			proximoEslabon = eslabon.getEslabonArriba();
			break;
		case ABAJO:
			proximoEslabon = eslabon.getEslabonAbajo();
			break;
		case DERECHA:
			proximoEslabon = eslabon.getEslabonDerecho();
			break;
		case IZQUIERDA:
			proximoEslabon = eslabon.getEslabonIzquierdo();
			break;
		}
			this.comerEn(proximoEslabon);
	}

	public void comerEn(Tile eslabon2) {
		if (eslabon2!=null){
			eslabon2.comiblesComidosPor(this);
		}
		eslabon = eslabon2;
	}

	@Override
	public Tile getEslabon() {
		return this.eslabon;
	}

	@Override
	public void esComidoPor(Movable movible) {
		System.out.println("Estoy siendo comido - pacman");
		movible.eatPacman(this);
	}

	@Override
	public void eatDot(Dot punto) {
		punto.serComido();		
	}

	@Override
	public void eatGhost(Ghost fantasma) {
		fantasma.serComido(this);		
	}
	public void serComido(Ghost fantasma){
		muerto = true;
		System.out.println("El pacman fue Comido!!! Se termina el juego");
	}

	@Override
	public void eatPacman(Pacman pacman) {
		// no hago nada... no como pacmans		
	}

	public void setEslabon(Tile eslabon) {
		this.eslabon = eslabon;
		this.eslabon.addComible(this);
	}
	
	public boolean estaMuerto(){
		return muerto;
	}

}
